কাস্টম ভ্যালিডেটর

Web Development - অ্যাঙ্গুলার (Angular) - Angular ফর্মস এডভান্সড |
1
1

Angular-এ কাস্টম ভ্যালিডেটর একটি কাস্টম ফাংশন যা ফর্ম কন্ট্রোলের মান যাচাই করতে ব্যবহৃত হয়। আপনি যখন একটি নির্দিষ্ট শর্তের অধীনে মান যাচাই করতে চান, যেমন পাসওয়ার্ড শক্তি বা ইমেইল ঠিকানা নির্দিষ্ট ফরম্যাটে না হওয়া, তখন কাস্টম ভ্যালিডেটর খুব কার্যকরী হয়। Angular ফর্মে দুই ধরনের ভ্যালিডেটর থাকে: সিঙ্গেল ভ্যালিডেটর (যেমন required, minLength) এবং কাস্টম ভ্যালিডেটর

কাস্টম ভ্যালিডেটর তৈরি করার মাধ্যমে আপনি ফর্ম কন্ট্রোলের মানের উপর নিয়ন্ত্রণ বাড়াতে পারেন।


কাস্টম ভ্যালিডেটর তৈরি করা

কাস্টম ভ্যালিডেটর একটি ফাংশন হিসেবে তৈরি করা হয়, যা একটি AbstractControl (যেমন FormControl, FormGroup, ইত্যাদি) ইনপুট হিসেবে গ্রহণ করে এবং একটি ValidationErrors অবজেক্ট ফেরত দেয়। যদি ভ্যালিডেশন সফল হয়, তাহলে null ফেরত দেয়, অন্যথায় একটি ত্রুটি অবজেক্ট ফেরত দেয়।

কাস্টম ভ্যালিডেটরের সাধারণ গঠন

import { AbstractControl, ValidationErrors } from '@angular/forms';

export function customValidator(control: AbstractControl): ValidationErrors | null {
  // এখানে আপনার কাস্টম ভ্যালিডেশন লজিক থাকবে
  if (control.value && control.value.length < 5) {
    return { 'minLengthError': 'Value must be at least 5 characters long' };
  }
  return null;  // যদি কোনো ত্রুটি না থাকে
}

এখানে, control.value মান যাচাই করা হচ্ছে। যদি এটি 5 অক্ষরের কম হয়, তাহলে একটি ত্রুটি অবজেক্ট ফেরত দিচ্ছে। null ফেরত দিলে মানটি ভ্যালিড হিসেবে গণ্য হবে।


কাস্টম ভ্যালিডেটর ব্যবহার করা

কাস্টম ভ্যালিডেটরটি FormControl অথবা FormGroup-এ ব্যবহার করা হয়, যেখানে আপনি ফর্ম কন্ট্রোলের জন্য কাস্টম ভ্যালিডেশন নির্ধারণ করতে পারেন।

উদাহরণ: কাস্টম ভ্যালিডেটর একটি ফর্ম কন্ট্রোলে ব্যবহার

import { Component } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { customValidator } from './custom-validator';

@Component({
  selector: 'app-my-form',
  template: `
    <form [formGroup]="myForm" (ngSubmit)="onSubmit()">
      <label for="myInput">Enter text:</label>
      <input id="myInput" formControlName="myInput" />
      <div *ngIf="myForm.get('myInput').hasError('minLengthError')">
        Minimum length is 5 characters.
      </div>
      <button type="submit" [disabled]="myForm.invalid">Submit</button>
    </form>
  `
})
export class MyFormComponent {
  myForm: FormGroup;

  constructor(private fb: FormBuilder) {
    this.myForm = this.fb.group({
      myInput: ['', [Validators.required, customValidator]]  // কাস্টম ভ্যালিডেটর ব্যবহার করা হয়েছে
    });
  }

  onSubmit() {
    if (this.myForm.valid) {
      console.log('Form Submitted', this.myForm.value);
    } else {
      console.log('Form is invalid');
    }
  }
}

এখানে, myInput নামক ফর্ম কন্ট্রোলটি required এবং customValidator ব্যবহার করে ভ্যালিডেট করা হচ্ছে। যদি ব্যবহারকারী ৫ অক্ষরের কম ইনপুট দেয়, তাহলে একটি ত্রুটি মেসেজ দেখানো হবে।


কাস্টম অ্যাসিঙ্ক্রোনাস ভ্যালিডেটর

কাস্টম ভ্যালিডেটর শুধু সিঙ্ক্রোনাস নয়, আপনি অ্যাসিঙ্ক্রোনাস ভ্যালিডেটরও তৈরি করতে পারেন। অ্যাসিঙ্ক্রোনাস ভ্যালিডেটর সাধারণত যখন HTTP রিকোয়েস্টের মাধ্যমে কোনো মান যাচাই করতে হয় তখন ব্যবহার করা হয় (যেমন, ডাটাবেসে ইউজারনেমের স্বতন্ত্রতা চেক করা)।

অ্যাসিঙ্ক্রোনাস ভ্যালিডেটর উদাহরণ

import { AbstractControl, ValidationErrors } from '@angular/forms';
import { Observable, of } from 'rxjs';
import { debounceTime, map, switchMap } from 'rxjs/operators';

export function asyncCustomValidator(control: AbstractControl): Observable<ValidationErrors | null> {
  return of(control.value).pipe(
    debounceTime(300), // কিছু সময়ের জন্য অপেক্ষা করতে হবে
    switchMap(value => {
      // এখানে আপনি HTTP রিকোয়েস্ট ব্যবহার করতে পারেন
      return value === 'existingUsername' ? of({ 'usernameTaken': true }) : of(null);
    })
  );
}

এই অ্যাসিঙ্ক্রোনাস ভ্যালিডেটরে, যদি ইনপুটের মান existingUsername হয়, তাহলে একটি ত্রুটি ফেরত দেবে। অন্যথায় null ফেরত দেবে, যা মানকে বৈধ হিসেবে গণ্য করবে।

অ্যাসিঙ্ক্রোনাস ভ্যালিডেটর ব্যবহার করা

this.myForm = this.fb.group({
  username: ['', [Validators.required], [asyncCustomValidator]]  // অ্যাসিঙ্ক্রোনাস ভ্যালিডেটর ব্যবহার
});

এখানে, username ফর্ম কন্ট্রোলে asyncCustomValidator যুক্ত করা হয়েছে, যা আসন্ন ইউজারনেমের জন্য অ্যাসিঙ্ক্রোনাস ভ্যালিডেশন পরিচালনা করবে।


উপসংহার

Angular-এ কাস্টম ভ্যালিডেটর আপনাকে আপনার অ্যাপ্লিকেশনের ফর্ম কন্ট্রোলের জন্য কাস্টম ভ্যালিডেশন লজিক তৈরি এবং প্রয়োগ করতে সাহায্য করে। আপনি সিঙ্ক্রোনাস বা অ্যাসিঙ্ক্রোনাস ভ্যালিডেটর তৈরি করতে পারেন, যা আপনাকে আপনার অ্যাপ্লিকেশনের ব্যাবহারকারীর ইনপুট যাচাই করার আরও নিয়ন্ত্রণ দেয়।

Content added By
Promotion